home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
var_list
/
var_list.bas
next >
Wrap
BASIC Source File
|
1994-11-16
|
6KB
|
194 lines
10 REM 変数チェック
20 '
30 '1992.12.31-1993.1.6
40 '
50 DEFINT A-Z
60 WIDTH 80,25:CONSOLE 0,24,2:CLS
70 RSVMAX=239
80 K_FLG=0:DP=1
90 '
100 DIM RSV$(RSVMAX)
110 DIM VAR_D$(9999),LNUM_D(9999),PREV_N(9999),NEXT_N(9999)
120 DIM AB_TBL(255),TBL_FL(255)
130 VAR_D$(0)=CHR$(0) :LNUM_D(0)=0:PREV_N(0)=-1:NEXT_N(0)=1
140 VAR_D$(1)=CHR$(255):LNUM_D(1)=0:PREV_N(1)=0 :NEXT_N(1)=-1
150 AB_TBL(0)=0
160 FOR I=1 TO 255
170 AB_TBL(I)=1
180 NEXT
190 TBL_FL(0)=1:TBL_FL(255)=1
200 '
210 RESTORE *RESERVED.WORD
220 FOR I=0 TO RSVMAX
230 READ RSV$(I)
240 NEXT
250 '
260 LINE INPUT "ファイル名を入力 ",BASFILE$
270 IF BASFILE$="" THEN 550
280 ON ERROR GOTO *INPUT.ER
290 IF KRIGHT$(BASFILE$,4)<>".BAS" THEN ERROR 255
300 OPEN BASFILE$ FOR INPUT AS #1
310 ON ERROR GOTO 0
320 '
330 WHILE EOF(1)=0
340 LINE INPUT# 1,LINEDATA$
350 L_NUM=VAL(LEFT$(LINEDATA$,7))
360 PRINT:PRINT:PRINT USING "###### ";L_NUM;
370 GOSUB *WORD.EXTRACT
380 WEND
390 CLOSE
400 '
410 LSTFILE$="":PT=1:ESC=0
420 WHILE ESC=0
430 B$=KMID$(BASFILE$,PT,1)
440 IF B$="." THEN ESC=1
450 LSTFILE$=LSTFILE$+B$
460 PT=PT+1
470 WEND
480 LSTFILE$=LSTFILE$+"LST"
490 ON ERROR GOTO *OUTPUT.ER
500 OPEN LSTFILE$ FOR OUTPUT AS #1
510 ON ERROR GOTO 0
520 '
530 GOSUB *HYOUJI
540 CLOSE
550 END
560 '
570 *WORD.EXTRACT
580 LLEN=KLEN(LINEDATA$)
590 MD=1:QMD=0
600 FOR LP=1 TO LLEN
610 CHAR$=KMID$(LINEDATA$,LP,1)
620 IF QMD=0 THEN
630 ON MD GOSUB *MD1,*MD2,*MD2,*MD2
640 IF MD=5 AND CHAR$=":" THEN MD=1
650 ENDIF
660 IF CHAR$=CHR$(&H22) THEN QMD=1-QMD
670 NEXT
680 IF MD=2 AND QMD=0 THEN
690 ML=LLEN-SP+1
700 GOSUB *KAKUTEI
710 ENDIF
720 RETURN
730 '
740 *MD1 '未確定状態
750 IF CHAR$="'" THEN MD=0:GOTO 820
760 IF CHAR$="*" THEN MD=3:GOTO 820
770 IF CHAR$="&" THEN MD=4:GOTO 820
780 IF KTYPE(CHAR$,1)=1 OR (&H41<=ASC(CHAR$) AND ASC(CHAR$)<=&H5A) THEN
790 MD=2
800 SP=LP
810 ENDIF
820 RETURN
830 '
840 *MD2 '切り取り中
850 IF KTYPE(CHAR$,1)=1 THEN 1000
860 IF &H41<=ASC(CHAR$) AND ASC(CHAR$)<=&H5A THEN 1000
870 IF &H30<=ASC(CHAR$) AND ASC(CHAR$)<=&H39 THEN 1000
880 IF CHAR$="_" THEN 1000
890 IF CHAR$="$" THEN 1000
900 IF CHAR$="%" THEN 1000
910 IF CHAR$="&" THEN 1000
920 IF CHAR$="!" THEN 1000
930 IF CHAR$="#" THEN 1000
940 IF MD=3 AND CHAR$="." THEN 1000
950 IF MD=3 OR MD=4 THEN MD=1 :GOTO 1000
960 IF CHAR$="(" THEN K_FLG=1
970 MD=1
980 ML=LP-SP
990 GOSUB *KAKUTEI
1000 RETURN
1010 '
1020 *KAKUTEI
1030 KOHO$=KMID$(LINEDATA$,SP,ML)
1040 IF KOHO$="REM" OR KOHO$="DATA" THEN MD=0:GOTO 1170
1050 IF MID$(LINEDATA$,SP-1,1)="*" THEN 1170
1060 IF KOHO$="DEFINT" OR KOHO$="DEFLNG" OR KOHO$="DEFSNG" OR KOHO$="DEFDBL" OR KOHO$="DEFSTR" THEN MD=5:GOTO 1170
1070 RSV=0
1080 FOR I=0 TO RSVMAX
1090 IF KOHO$=RSV$(I) THEN RSV=1
1100 NEXT
1110 IF RSV=0 THEN
1120 IF K_FLG=1 THEN KOHO$=KOHO$+"()"
1130 PRINT KOHO$;",";
1140 GOSUB *SEIRI
1150 ENDIF
1160 K_FLG=0
1170 RETURN
1180 '
1190 *SEIRI
1200 DP=DP+1
1210 VAR_D$(DP)=KOHO$:LNUM_D(DP)=L_NUM
1220 TBL_N=ASC(KOHO$)
1230 CPS=AB_TBL(TBL_N)
1240 ESC=0:CP=CPS
1250 WHILE ESC=0
1260 IF KOHO$<VAR_D$(CP) THEN
1270 ESC=1
1280 MAE=PREV_N(CP):ATO=CP
1290 NEXT_N(MAE)=DP:PREV_N(DP)=MAE
1300 NEXT_N(DP)=ATO:PREV_N(ATO)=DP
1310 IF CP=CPS THEN
1320 AB_TBL(TBL_N)=DP:TBL_FL(TBL_N)=1
1330 TP=TBL_N-1
1340 WHILE TBL_FL(TP)=0
1350 AB_TBL(TP)=DP
1360 TP=TP-1
1370 WEND
1380 ENDIF
1390 ENDIF
1400 CP=NEXT_N(CP)
1410 WEND
1420 RETURN
1430 '
1440 *HYOUJI
1450 DN=NEXT_N(0):VAR$=VAR_D$(0)
1460 WHILE DN<>1
1470 IF VAR_D$(DN)<>VAR$ THEN
1480 VAR$=VAR_D$(DN):L_NUM=0
1490 PRINT:PRINT:PRINT VAR$,
1500 PRINT #1,CHR$(&HD);CHR$(&HA);CHR$(&HD);CHR$(&HA);VAR$
1510 ENDIF
1520 IF LNUM_D(DN)>L_NUM THEN
1530 L_NUM=LNUM_D(DN)
1540 PRINT L_NUM;
1550 PRINT #1,USING "########";L_NUM;
1560 ENDIF
1570 DN=NEXT_N(DN)
1580 WEND
1590 RETURN
1600 '
1610 '
1620 *INPUT.ER
1630 PRINT:PRINT "ファイル名が不正です。終了ならリターン":PRINT
1640 BEEP
1650 RESUME 260
1660 '
1670 *OUTPUT.ER
1680 KILL LSTFILE$
1690 RESUME 500
1700 '
1710 *RESERVED.WORD
1720 DATA ABS,AKCNV$,AND,ASC,ATN,AUTO,BAUD,BEEP,BGM,CALL,CDBL,CD,CDINF
1730 DATA CDSTAT,CDSTIME$,CHAIN,CHR$,CINT,CIRCLE,CLEAR,CLNG,CLOSE,CLS
1740 DATA COLOR,COM,COMMON,CONNECT,CONSOLE,CONT,COS,CSNG,CSRLIN,CVD,CVI
1750 DATA CVL,CVDMBF,CVS,CVSMBF,DATA,DATE,DATE$,DEF,DEFDBL,DEFINT,DEFLNG
1760 DATA DEFSNG,DEFSTR,DELETE,DIM,DRAW,DSKF,DSKI$,DSKINI,EDIT,ELSE,END
1770 DATA ENDIF,EOF,EQV,ERASE,ERL,ERR,ERROR,EXEC,EXP,FIELD,FILES,FIX,FN
1780 DATA FOR,FRE,GCURSOR,GET,GO,GOTO,HARDC,HEX$,IF,IMP,INKEY$,INP,INPUT
1790 DATA INPUT$,INSTR,INT,INTERVAL,JIS,JTRIG,JPAD,KACNV$,KANJI,KEXT$
1800 DATA KEY,KILL,KINSTR,KLEFT$,KLEN,KMID$,KNJ$,KRIGHT$,KTYPE,LEFT$,LEN
1810 DATA LET,LINE,LIST,LLIST,LOAD,LOADM,LOC,LOCATE,LOF,LOG,LPOS,LPRINT
1820 DATA LSET,MAP,MERGE,MID$,MIKD$,MKDMBF$,MKI$,MKL$,MKS$,MKSMBF$,MOD
1830 DATA MON,MOUSE,MOVIE,NAME,NEW,NEXT,NOT,OCT$,OFF,ON,OPEN,OR,OUT,OUTM
1840 DATA OUTPUT,PAD,PAINT,PALETTE,PART,PASTEL,PCMPLAY,PCMREC,PEEK,PEN
1850 DATA PLAY,POINT,POKE,POS,PRESET,PRINT,PSET,PTRIG,PUT,RANDOMIZE,READ
1860 DATA REM,RENUM,RESET,RESTORE,RESUME,RETURN,RIGHT$,RND,ROLL,RSET,RUN
1870 DATA SAVE,SCREEN,SEARCH,SGN,SHELL,SIMPOSE,SIN,SINPUT,SKIPF,SMSGPLAY
1880 DATA SOUND,SPACE$,SPC,SPRITE,SQR,STEP,STOP,STR$,STRING$,SUB,SWAP
1890 DATA SYMBOL,SYSTEM,TAB,TALK,TAN,TERM,THEN,TIME,TIME$,TO,TROFF,TRON
1900 DATA UNLIST,USING,USR,VAL,VARPTR,VIEW,VOICE,WAIT,WEND,WHILE,WIDTH
1910 DATA WINDOW,WRITE,XOR,PAUSE,FONT,GET@,GOSUB,INPUT#,LOAD@,INFO,PLAY@
1920 DATA PRINT#,PUT@,SAVE@,SCREEN@,COPY,SET,WRITE#,MATTE,OPEQUE,OUTPUT
1930 DATA APPEND,RNDIO,AS